package Collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

/**
 * list例子
 * Created by Administrator on 2017/6/8.
 */
public class ListDemo {
    public static void main(String[] args) {
        /**
         * Collection:集合层次中的根接口，JDK没有提供这个接口的实现类。
         * Set:不能包含重复的元素，子接口SortedSet是一个按照升序排列的元素的Set。
         * List:可以包含重复的元素，是一个有序的集合，提供了按索引访问的方式，有次序，位置不改变。
         */
        // ArrayList演示
        ArrayList a1 = new ArrayList();
        a1.add("winsun");
        a1.add("weixin");
        a1.add("mybole");

        for (int i = 0; i < a1.size(); i++) {
            System.out.println(a1.get(i));
        }

        /**
         * 利用ArrayList的toArray()返回一个对象的数组也可以利用Arrays.asList()方法返回一个列表
         * 返回固定尺寸的列表,当返回以后就不能修改列表的大小了，可以修改列表中元素的值，但不能增加容量，可以用set()方法对值进行修改：
         * Object set(int index,Object element)
         * 用element替换指定的index的对象
         * Arrays.asList()和Collection.toArray()是作为数组和集合类的一个桥
         * 如果想从集合类中获得一个数组可以使用toArray()方法；如果想从数组中获得一个列表可以使用asList()方法 ：
         */
        Object[] objs = a1.toArray();
        System.out.println(Arrays.toString(objs));

        /**
         * LinkedList类
         * LinkedList是采用双向循环链表实现的.
         * 利用LinkedList实现栈(stack)，队列(queue)，双向队列(double-ended queue)
         */
        //遍历
        Iterator it = a1.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

    }
}
